/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package trastienda.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import trastienda.excepcion.DAOExcepcion;
import trastienda.modelo.Sugerencia;
import trastienda.util.ConexionBD;

public class SugerenciaDAO extends BaseDAO {

    public Collection<Sugerencia> buscarPorNombre(String nombre)
            throws DAOExcepcion {
        String query = "select Usuarios_id,usuario,area,fecha_emi,comentario from sugerencia where Usuario like ?";
        Collection<Sugerencia> c = new ArrayList<Sugerencia>();
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, "%" + nombre + "%");
            rs = stmt.executeQuery();
            while (rs.next()) {
                Sugerencia vo = new Sugerencia();
                vo.setUsuarios_id(rs.getString("Usuarios_id"));
                vo.setUsuario(rs.getString("usuario"));
                vo.setArea(rs.getString("Area"));
                vo.setFecha_emi(rs.getDate("fecha_emi"));
                vo.setComentario(rs.getString("comentario"));
               

                c.add(vo);
            }
        } catch (SQLException e) {
            System.err.println(e.getMessage());
            throw new DAOExcepcion(e.getMessage());
        } finally {
            this.cerrarResultSet(rs);
            this.cerrarStatement(stmt);
            this.cerrarConexion(con);
        }
        return c;
    }

    public Sugerencia insertar(Sugerencia vo) throws DAOExcepcion {
        String query = "INSERT INTO sugerencia (Usuarios_id,usuario,area,fecha_emi,comentario) "
                + "VALUES (?,?,?,now(),?)";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, vo.getUsuarios_id());
            stmt.setString(2, vo.getUsuario());
            stmt.setString(3, vo.getArea());
            stmt.setString(4, vo.getComentario());

            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo insertar");
            }
        } catch (SQLException e) {
            System.err.println(e.getMessage());
            throw new DAOExcepcion(e.getMessage());
        } finally {
            this.cerrarStatement(stmt);
            this.cerrarConexion(con);
        }
        return vo;
    }

    public void eliminar(String id) throws DAOExcepcion {
        String query = "DELETE FROM inventario_soft WHERE id";
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, id);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo eliminar");
            }
        } catch (SQLException e) {
            System.err.println(e.getMessage());
            throw new DAOExcepcion(e.getMessage());
        } finally {
            this.cerrarStatement(stmt);
            this.cerrarConexion(con);
        }
    }

    public Collection<Sugerencia> listarTodos() throws DAOExcepcion {
        String query = "select Usuarios_id,usuario,area,fecha_emi,comentario from sugerencia";
        Collection<Sugerencia> c = new ArrayList<Sugerencia>();
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            rs = stmt.executeQuery();
            while (rs.next()) {
                Sugerencia vo = new Sugerencia();
                vo.setUsuarios_id(rs.getString("Usuarios_id"));
                vo.setUsuario(rs.getString("Nombres"));
                vo.setArea(rs.getString("area"));
                vo.setFecha_emi(rs.getDate("fecha_emi"));
                vo.setComentario(rs.getString("comentario"));
                c.add(vo);
            }
        } catch (SQLException e) {
            System.err.println(e.getMessage());
            throw new DAOExcepcion(e.getMessage());
        } finally {
            this.cerrarResultSet(rs);
            this.cerrarStatement(stmt);
            this.cerrarConexion(con);
        }
        return c;
    }
}
